package com.weiqiao.mall.service;

import com.weiqiao.mall.domain.CardCommodityEntity;
import com.weiqiao.mall.domain.TeamCommodityEntity;
import com.weiqiao.mall.domain.TeamEntity;
import com.weiqiao.mall.service.vo.UpdateTeamCommodityDistributorInfoVO;
import com.weiqiao.mall.service.vo.UpdateTeamCommodityVO;
import org.bson.Document;
import org.bson.conversions.Bson;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Map;

public interface ITeamCommodityService {


    /**
     * 商品管理--统计商品数量
     *
     * @param bson 查询条件
     */
    int countCommodity(int companyId, Bson bson);

    /**
     * 商品管理--查询商品
     */
    List<TeamCommodityEntity> findCommoditys(int company_id, Document doc, Pageable pageable);

    /**
     * 商品管理--查询商品
     *
     * @param filter
     */
    List<TeamCommodityEntity> findCommoditys(int companyId, Bson filter);

    /**
     * 获取商品团队信息
     * 先获取团队商品，根据团队id，获取团队详情
     * @param companyId 公司id
     * @param filter 查询团队商品条阿金
     */
    Map getCommodityTeamInfo(int companyId, Bson filter);

    /**
     * 通过id查询
     *
     * @param company_id
     * @return
     */
    TeamCommodityEntity findCommodityById(String commodity_id, int company_id);

    /**
     * 通过id，假删除
     * @param commodity_id
     * @param company_id
     * @return
     */
    boolean detCardCommodity(String commodity_id, int company_id);

    /**
     * 真删除团队商品，除了当前商品省长所在的团队保留，取消的省长，团队删除
     * @param companyId
     * @param commodity
     * @return
     */
    boolean delTeamCommodity(int companyId, CardCommodityEntity commodity);


    /**
     * 批量更新信息
     *
     * @param filter 查询条件
     * @param doc    更新内容
     */
    boolean updateCommodity(int companyId, Bson filter, Document doc);

    /**
     * 更新商品团队信息，团队商品信息
     *
     * @param entity
     * @return
     */
    boolean updateCommodityTeamInfo(UpdateTeamCommodityVO entity);

    /**
     * 更新当前商品，当前团队的分销金额
     * @param entity
     * @return
     */
    boolean updateCommodityDistributorInfo(UpdateTeamCommodityDistributorInfoVO entity);


}
